CREATE OR REPLACE PACKAGE BODY EDIV2.Pack_Accesos_FormatoUnico AS
/******************************************************************************
   NAME:       Pack_Accesos_FormatoUnico
   PURPOSE:

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        22/11/2012   Luis Antonio      Creacion del Paquete
******************************************************************************/


PROCEDURE  FormatoUnicoInsertar(pnidDocumento NUMBER, pnidTipoSolicitud NUMBER, 
						pnidTipoTramite NUMBER, pnidTipo_Empresa NUMBER, pnidArea_Trabajo NUMBER, 
						pcantidad_Entregada NUMBER, pnidEmpresa NUMBER, pfecha_Entrega VARCHAR2, 
						pfecha_Actualizacion VARCHAR2, pfecha_Inicio_Vigencia VARCHAR2, pfecha_Fin_Vigencia VARCHAR2, 
						pentrega_Credencial VARCHAR2, ppatente VARCHAR2, pnombre_Area_Especifica VARCHAR2, 
						pidCredencial_Acuse_Recibo VARCHAR2, prazon_Social_Solicitante VARCHAR2, pempresa_Proveedora VARCHAR2, 
						pnombre_Acuse_Recibo VARCHAR2, pnombre_Responsable VARCHAR2, prepresentante_Legal VARCHAR2, 
						pmotivo_Actividad VARCHAR2, pobservaciones VARCHAR2, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
BEGIN
  INSERT INTO ediv2.FormatoUnico(nid, nidDocumento, nidTipoSolicitud, 
						nidTipoTramite, nidTipo_Empresa, nidArea_Trabajo, 
						cantidad_Entregada, nidEmpresa, fecha_Entrega, 
						fecha_Actualizacion, fecha_Inicio_Vigencia, fecha_Fin_Vigencia, 
						entrega_Credencial, patente, nombre_Area_Especifica, 
						idCredencial_Acuse_Recibo, razon_Social_Solicitante, empresa_Proveedora, 
						nombre_Acuse_Recibo, nombre_Responsable, representante_Legal, 
						motivo_Actividad, observaciones)
  VALUES               (seq_FormatoUnico.nextval, pnidDocumento, pnidTipoSolicitud, 
						pnidTipoTramite, pnidTipo_Empresa, pnidArea_Trabajo, 
						pcantidad_Entregada, pnidEmpresa, to_date(pfecha_Entrega,'DD/MM/YYYY HH24:MI:SS'), 
						to_date(pfecha_Actualizacion,'DD/MM/YYYY HH24:MI:SS'), to_date(pfecha_Inicio_Vigencia,'DD/MM/YYYY HH24:MI:SS'), to_date(pfecha_Fin_Vigencia,'DD/MM/YYYY HH24:MI:SS'), 
						pentrega_Credencial, ppatente, pnombre_Area_Especifica, 
						pidCredencial_Acuse_Recibo, prazon_Social_Solicitante, pempresa_Proveedora, 
						pnombre_Acuse_Recibo, pnombre_Responsable, prepresentante_Legal, 
						pmotivo_Actividad, pobservaciones);
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  FormatoUnico_Insertar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  FormatoUnico_Insertar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  FormatoUnicoModificar(pnidDocumento NUMBER, pnidTipoSolicitud NUMBER, 
						pnidTipoTramite NUMBER, pnidTipo_Empresa NUMBER, pnidArea_Trabajo NUMBER, 
						pcantidad_Entregada NUMBER, pnidEmpresa NUMBER, pfecha_Entrega VARCHAR2, 
						pfecha_Actualizacion VARCHAR2, pfecha_Inicio_Vigencia VARCHAR2, pfecha_Fin_Vigencia VARCHAR2, 
						pentrega_Credencial VARCHAR2, ppatente VARCHAR2, pnombre_Area_Especifica VARCHAR2, 
						pidCredencial_Acuse_Recibo VARCHAR2, prazon_Social_Solicitante VARCHAR2, pempresa_Proveedora VARCHAR2, 
						pnombre_Acuse_Recibo VARCHAR2, pnombre_Responsable VARCHAR2, prepresentante_Legal VARCHAR2, 
						pmotivo_Actividad VARCHAR2, pobservaciones VARCHAR2, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
BEGIN
  UPDATE ediv2.FormatoUnico
  SET    nidDocumento=pnidDocumento, nidTipoSolicitud=pnidTipoSolicitud, 
		nidTipoTramite=pnidTipoTramite, nidTipo_Empresa=pnidTipo_Empresa, nidArea_Trabajo=pnidArea_Trabajo, 
		cantidad_Entregada=pcantidad_Entregada, nidEmpresa=pnidEmpresa, fecha_Entrega=to_date(pfecha_Entrega,'DD/MM/YYYY HH24:MI:SS'), 
		fecha_Actualizacion=to_date(pfecha_Actualizacion,'DD/MM/YYYY HH24:MI:SS'), fecha_Inicio_Vigencia=to_date(pfecha_Inicio_Vigencia,'DD/MM/YYYY HH24:MI:SS'), fecha_Fin_Vigencia=to_date(pfecha_Fin_Vigencia,'DD/MM/YYYY HH24:MI:SS'), 
		entrega_Credencial=pentrega_Credencial, patente=ppatente, nombre_Area_Especifica=pnombre_Area_Especifica, 
		idCredencial_Acuse_Recibo=pidCredencial_Acuse_Recibo, razon_Social_Solicitante=prazon_Social_Solicitante, empresa_Proveedora=pempresa_Proveedora, 
		nombre_Acuse_Recibo=pnombre_Acuse_Recibo, nombre_Responsable=pnombre_Responsable, representante_Legal=prepresentante_Legal, 
		motivo_Actividad=pmotivo_Actividad, observaciones=pobservaciones
  WHERE  nidDocumento=pNidDocumento;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := ' FormatoUnico_Modificar Terminado OK';
  dbms_output.put_line(' FormatoUnico_Modificar Terminado OK');
    
EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  FormatoUnico_Modificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  FormatoUnico_Modificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  FormatoUnicoConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidTipoSolicitud, 
						nidTipoTramite, nidTipo_Empresa, nidArea_Trabajo, 
						cantidad_Entregada, nidEmpresa, fecha_Entrega, 
						fecha_Actualizacion, fecha_Inicio_Vigencia, fecha_Fin_Vigencia, 
						entrega_Credencial, patente, nombre_Area_Especifica, 
						idCredencial_Acuse_Recibo, razon_Social_Solicitante, empresa_Proveedora, 
						nombre_Acuse_Recibo, nombre_Responsable, representante_Legal, 
						motivo_Actividad, observaciones
    FROM   ediv2.FormatoUnico
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  FormatoUnicoDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidTipoSolicitud, 
						nidTipoTramite, nidTipo_Empresa, nidArea_Trabajo, 
						cantidad_Entregada, nidEmpresa, fecha_Entrega, 
						fecha_Actualizacion, fecha_Inicio_Vigencia, fecha_Fin_Vigencia, 
						entrega_Credencial, patente, nombre_Area_Especifica, 
						idCredencial_Acuse_Recibo, razon_Social_Solicitante, empresa_Proveedora, 
						nombre_Acuse_Recibo, nombre_Responsable, representante_Legal, 
						motivo_Actividad, observaciones
    FROM   ediv2.FormatoUnico
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;


END Pack_Accesos_FormatoUnico;
